/*
 * EquilibriumCondition.h
 *
 *  Created on: 8 Aug 2011
 *      Author: Allan
 */

#ifndef EQUILIBRIUMCONDITION_H_
#define EQUILIBRIUMCONDITION_H_

// C++ includes
#include <tuple>

// Eigen includes
#include <Eigen/Core>
using namespace Eigen;

// GeoReact includes
#include "../Types.h"

struct EquilibriumCondition
{
	/// The alpha and beta row that represents mathematically the equilibrium condition
	VectorXd alphaRow, betaRow;
	
	/// The function h = h(T, P, n, a) that represents mathematically the right-hand side of the equilibrium condition
	FunctionTPna h;
	
	/// Default constructor
	EquilibriumCondition()
	{ h = ConstantTPna(0.0); }
	
	/// Constructor
	EquilibriumCondition(unsigned Nj, unsigned Ne)
	{ alphaRow = VectorXd::Zero(Nj); betaRow = VectorXd::Zero(Ne); h = ConstantTPna(0.0); }
};

#endif /* EQUILIBRIUMCONDITION_H_ */
